<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <ul class="list">
        <li>01</li>
        <li>02</li>
        <li>03</li>
        <li>04</li>
        <li>05</li>
        <li>06</li>
        <li>07</li>
        <li>08</li>
        <li>09</li>
        <li>10</li>
    </ul>
</body>
<script>
    // 扩展运算符   ...
    // 展开数组  伪数组 字符串 Map Set等可遍历结构

    // (1)  在数组中使用 => 展开数组 将一个数组转为用逗号分隔的参数序列。
    // a. 将数组中的每个元素,作为参数放到函数中
    // b. 将数组中的每个元素,作为参数放到新数组中

    // var list = [1, 4, 7, 2, 5, 8];
    // // ...list  =>  1, 4, 7, 2, 5, 8
    // console.log(...list);
    // console.log(1, 4, 7, 2, 5, 8);

    //  a. 将数组中的每个元素,作为参数放到函数中
    // 求数组的最大值?
    // var list = [1, 4, 7, 2, 5, 8];
    // var max = Math.max(...list);
    // console.log(max);


    // b. 将数组中的每个元素,作为参数放到新数组中
    // (1) 数组的复制
    var list = [1, 4, 7, 2, 5, 8, 3, 6, 9];
    var arr = [...list];  // ...list => 1, 4, 7, 2, 5, 8, 3, 6, 9 => []
    console.log(arr, list, arr === list);

    // (2) 数组的合并 
    // var a = [1, 4, 7];
    // var b = [2, 5, 8];
    // var c = [3, 6, 9];

    // var list = a.concat(b, c);
    // var list = [...a, ...b, ...c];
    // console.log(list);

    // (3) 伪数组转真数组
    // var liList = document.querySelectorAll(".list li");
    // var list = Array.from(liList);
    // console.log(list, Array.isArray(list));

    // var list = [...liList];
    // console.log(list, Array.isArray(list));



    // 展开数组 字符串 伪数组 Map Set等可遍历结构

    // 展开字符串 
    var str = "hello";
    var list = [...str];
    console.log(list);

    // 展开Set()
    var s = new Set();
    s.add(1).add(4).add(7);
    var list = [...s];
    console.log(list);

    // 展开Map()

    var m = new Map();
    m.set(100, 200);
    m.set("hello", "world");
    m.set(true, false);
    var list = [...m];
    console.log(list);




</script>

</html>